package popcorn.ticket.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import popcorn.ticket.entity.Movies;
import popcorn.ticket.entity.MoviesExample;
import popcorn.ticket.tool.PageData;
/**
 * 电影业务接口
 * @author bug总和我作队
 *
 */
public interface MovieService {
	/**
	 * 统计电影数量
	 * 
	 * @param example
	 * @return
	 */
	public long countByExample(MoviesExample example);

	/**
	 * 添加电影信息
	 * 
	 * @param record
	 * @return
	 */
	public int insert(Movies record);

	/**
	 * 查询电影信息（分页）
	 * 
	 * @param example
	 * @return
	 */
	public PageData<Movies> selectByExample(MoviesExample example, int page, int pagesize);

	/**
	 * 查询电影信息（前台）
	 * 
	 * @param example
	 * @return
	 */
	public List<Movies> selectByExample(MoviesExample example);

	/**
	 * 电影查询根据id
	 * 
	 * @param movieid
	 * @return
	 */
	public Movies selectByPrimaryKey(Integer movieid);

	/**
	 * 根据id自定义修改
	 * 
	 * @param record
	 * @return
	 */
	public int updateByPrimaryKeySelective(Movies record);

	/**
	 * 根据条件自定义修改
	 * 
	 * @param record
	 * @param example
	 * @return
	 */
	public int updateByExampleSelective(@Param("record") Movies record, @Param("example") MoviesExample example);

	/**
	 * 获取今天推荐的影片
	 * 
	 * @return
	 */
	public List<Movies> getMoviesOK();

	/**
	 * 通过电影编号查询该电影的票数
	 * 
	 * @param movieId
	 * @return
	 */
	public int getMTicketNum(int movieId);

	/**
	 * 通过电影编号查询该电影的类型
	 * 
	 * @param movieId
	 * @return
	 */
	public List<Movies> getMType(int movieId);

	/**
	 * 查询今日排行的电影
	 * 
	 * @return
	 */
	public List<Movies> getMoviesToday();

	/**
	 * 今日放映的电影（前四名）
	 * 
	 * @return
	 */
	public List<Movies> getMoviesTodayFour();

	/**
	 * 通过编号查电影的分数
	 * 
	 * @param movieId
	 * @return
	 */
	public List<Movies> getMScore(int movieId);

	/**
	 * 根据电影类型查在映电影
	 * 
	 * @param typename
	 * @param page
	 * @param pagesize
	 * @return
	 */
	public List<Movies> selMoviesByTypename(String typename);

	/**
	 * 模糊查询在映电影
	 * 
	 * @param movie
	 * @return
	 */
	public List<Movies> selMoviesByLike(Movies movie);

	/**
	 * 根据条件对在映电影进行排序
	 * 
	 * @param factor
	 * @return
	 */
	public List<Movies> selMoviesByOrder(String factor);

	/**
	 * 热销榜 （分页，固定每页的数量为20，所以这里就不传limit的值了）
	 * 
	 * @param page
	 * @return
	 */
	public PageData<Movies> getListByOrder(int page);

	/**
	 * 通过电影编号查询电影详细信息
	 * 
	 * @param movieId
	 * @return
	 */
	public Movies getMInfo(int movieId);
	/**
	 * 输入框联想词
	 * @param movies
	 * @return
	 */
	public List getListWithSearch(Movies movies);
	/**
	 * 与联想词搜索相关的全部电影查询
	 * @param page
	 * @param keywords
	 * @param movies
	 * @return
	 */
	public PageData<Movies> selectMoviesByLike(int page, String keywords, Movies movies);
	/**
	 * 与联想词搜索相关的全部电影类型查询
	 * @param page
	 * @param keywords
	 * @param movies
	 * @return
	 */
	public PageData<Movies> selectMoviesByLikeWTN(int page, String keywords, Movies movies);
	/**
	 * 与联想词搜索相关的全部电影查询+电影状态的查询
	 * @param page
	 * @param keywords
	 * @param movies
	 * @param moviestatus
	 * @return
	 */
	public PageData<Movies> getMLikeAndStatus(int page, String keywords, Movies movies, int moviestatus); 
	/**
	 * 与联想词搜索相关的全部电影查询，与电影类型有关+状态的查询
	 * @param page
	 * @param keywords
	 * @param movies
	 * @param moviestatus
	 * @return
	 */
	public PageData<Movies> getMtypeLikeAndStatus(int page, String keywords, Movies movies, int moviestatus);
	/**
	 * 获取即将上映的评分排行榜
	 * @return
	 */
	public List<Movies> getMoviesSoon();


}
